The present invention relates to the field of communicating packetized data between network node devices. More particularly, the present invention relates to the field of communicating packetized data between network node devices in an IEEE 1394-1995 serial bus network.
A standard adopted by the Institute for Electrical and Electronics Engineers (IEEE), xe2x80x9cIEEE 1394-1995 Standard For A High Performance Serial Bus,xe2x80x9d is an international standard for implementing an economical high-speed serial bus architecture. This standard provides a universal input/output connection for interconnecting digital devices including, for example, audio-visual equipment and personal computers.
The IEEE 1394-1995 standard supports both asynchronous and isochronous format data transfers. Asynchronous transfers are data transfer operations which transfer data from a source node to a destination node and take place as soon as permitted after initiation. An example of an application appropriate for asynchronous data transfer is communication of a still image or text document. Control commands can also be sent asynchronously.
Isochronous data transfers are real-time data transfers which take place such that time intervals between significant instances have the same duration at both the transmitting and receiving applications. An example of an application suitable for the transfer of data isochronously is the transfer of audio-visual data (AV data) between devices, such as a video camera and a television set. The video camera records sounds and images (AV data) and stores the data in discrete segments on tape. Each segment represents the image and/or sound recorded over a limited period of time. The video camera then transfers each segment in a packetized manner during an appropriate interval for reproduction by the television set.
The IEEE 1394-1995 standard bus architecture provides multiple channels for isochronous data communication between applications. A six-bit channel number is broadcast with the data to allow reception by the appropriate application. This allows multiple applications to concurrently communicate isochronous data across the bus structure without interfering with each other.
The cable required by the IEEE 1394-1995 standard is relatively thin in size compared to other bulkier cables used to connect such devices. The IEEE 1394-1995 cable environment is a network of nodes connected by point-to-point links, each link including a port for each node""s physical connection and the cable between them. The physical topology for the cable environment of an IEEE 1394-1995 serial bus is a non-cyclic network of multiple ports, with finite branches. A primary restriction on the cable environment is that nodes must be connected together without forming any closed loops.
Devices can be added and removed from an IEEE 1394-1995 bus while the bus is active. If a device is so added or removed, the bus automatically reconfigures itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique address on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
The IEEE 1394-1995 cables connect ports together on different nodes. Each port includes terminators, transceivers and logic. A node can have multiple ports at its physical connection. The cable and ports act as bus repeaters between the nodes to simulate a single logical bus. The cable physical connection at each node includes one or more ports, arbitration logic, a resynchronizer and an encoder. Each of the ports provide the cable media interface into which the cable connector is connected. The arbitration logic provides access to the bus for the node. The resynchronizer takes received data-strobe encoded data bits and generates data bits synchronized to a local clock for use by the applications within the node. The encoder takes either data being transmitted by the node or data received by the resynchronizer, which is addressed to another node, and encodes it in data-strobe format for transmission across the IEEE 1394-1995 serial bus. Using these components, the cable physical connection translates the physical point-to-point topology of the cable environment into a virtual broadcast bus, which is expected by higher layers of the system. This is accomplished by taking all data received on one port of the physical connection, resynchronizing the data to a local clock and repeating the data out of all of the other ports from the physical connection.
Each isochronous data packet includes at least a 1394 packet header. The packet header includes overhead information necessary for proper communication of the packet. Typically, content data, such as audio-visual data, is included in the packet, in a data field following the packet header. When an isochronous data packet is received, the receiving device must generally separate the header information from the content data so that the content data can be appropriately processed, such as for display. In addition, due to timing considerations, isochronous packets which include only header information and no content data portion are occasionally communicated via an IEEE 1394-1995 bus. The data field may contain a header and audio-visual content data, as when the CIP Transport Protocol is used. This header within the data field is the CIP header. For CIP transport, some data fields contain only the CIP header. This use of a header and data protocol within the data field is referred to as an Isochronous Transport Protocol. A receiver of such isochronous packets cannot necessarily predict when a packet will not include a content data portion until after the 1394 header information is received.
This can cause errors in the processing of isochronous data packets at the receiving device. For example, if the receiving device receives an isochronous data, packet with only a header and no content data portion, but expected the packet to include a data portion, the receiving device will typically process the header portion properly. When the next data packet is received, however, the receiving device will process the header portion for this next packet as content data because the receiving device expected the next received information to be the content data portion of the prior packet.
The invention is an apparatus for and method of separating protocol header information contained in the data field from content data in an IEEE 1394-1995 serial bus network. A receiving node receives isochronous data packets from a transmitting node of such packets via an IEEE 1394-1995 serial bus. Within the data field, each packet can include a data portion in addition to protocol header information, although not every packet necessarily includes the data portion. The receiving node cannot necessarily predict when a packet does not include a data portion with audio-visual content until after at least a portion of a 1394 packet including the header is received.
Each incoming packet is loaded into a first-in, first-out, (FIFO) buffer in the receiving node as the packet is being received. The protocol header information within the data field is removed and stored in sequence in a first block of memory. This is accomplished by placing an input_more direct memory access (DMA) instruction into a next instruction register and, then, executing the instruction. An address for storing each protocol header is maintained by incrementing an address utilized for storing a previous protocol header an amount corresponding to the length of the previous header. In the preferred embodiment, each protocol header within the data field has an expected length of eight bytes.
In addition, the receiver is conditioned for removing the data portion from the FIFO buffer. This is accomplished by loading an input_last DMA instruction into the next instruction register. If examination of the 1394 header information reveals that the data field includes audio-visual data in addition to the protocol header information, the input_last instruction is executed. This removes the audio-visual data portion of the isochronous packet data field from the FIFO buffer and stores the data portion in sequence in a second block of memory. An address for storing each data portion is maintained by incrementing an address utilized for storing a previous data portion by an amount corresponding to the length of the data portion of a previous packet. In the preferred embodiment, each data portion has an expected length of 480 bytes. Upon execution of the input_last instruction, the receiver is conditioned to await a next incoming isochronous packet.
If, however, examination of the 1394 header reveals that the packet does not include an audio-visual data portion in addition to the protocol header information, the input_last instruction is replaced with a no_operation instruction. The no_operation instruction does not initiate any operations, but rather, serves as a replacement for the input_last instruction. Upon execution of the no_operation instruction, the receiver is conditioned to await a next incoming isochronous packet.
Accordingly, the invention appropriately responds to isochronous packets which contain an audio-visual data portion by receiving such packets and storing the data portion in successive memory locations, before awaiting a next isochronous packet. The packet headers are stored in successive locations separately from the data portions. In addition, the invention appropriately responds to a lack of a data portion in an isochronous packet by receiving and storing the packet protocol header in the stored sequence of packet protocol headers before awaiting a next isochronous packet. Thus, the invention achieves an object of appropriately separating and storing protocol headers and data from received isochronous packets, each in the sequence in which it is received. This object is achieved even when one or more packets do not include a data portion. This object is achieved while minimizing complexity in function and structure in the receiving node.
According to an aspect of the present invention, a method of receiving packetized data and separating protocol header information from content data in the packetized data, wherein not every data packet includes the content data, includes steps of receiving at least a portion of a packet wherein the portion includes at least a protocol header for the packet, determining whether the packet includes content data, and separating the content data from the header if the packet includes the content data. Preferably, the step of separating the content data from the protocol header includes a step of storing the content data in a memory location. The method can also include a step of conditioning a receiving device for separating the content data of the packet from the protocol header, wherein the step of determining is performed after the step of conditioning. The method can also include a step of reversing the step of conditioning the receiving device if the packet does not include the content data. Preferably, the memory location utilized for storing the content data is a next available location adjacent to a memory location utilized for storing content data of a prior packet. The step of reversing the step of conditioning the receiving device can include a step of placing a no operation instruction in a next instruction register included in the receiving device. Preferably, the packet is an isochronous data packet. In addition, the packet is preferably received in accordance with an IEEE 1394 standard.
According to another aspect of the present invention, a method of separating protocol header information from content data for packetized data received from a network segment by a network node wherein not every data packet includes the content data, includes steps of receiving at least a portion of a packet from the network segment into the network node wherein the portion includes at least a protocol header for the packet, removing the protocol header from the portion of the packet, storing the protocol header in a first memory location, conditioning the network node for removing content data of the packet, determining whether the packet includes the content data, removing the content data and storing the content data in a second memory location if the packet includes the content data, and reversing the step of conditioning the network node if the packet does not include the content data. Preferably, the second memory location is a next available location adjacent to a previous content data memory location utilized for storing a content data of a prior packet. In addition, the packet is preferably an isochronous data packet. The first memory location need not be adjacent to the second memory location. Preferably, the first memory location is a next available location adjacent to a previous protocol header memory location utilized for storing a protocol header of a prior packet.
According to yet another aspect of the present invention, a data communication network includes a sending node and a receiving node interconnected by a network segment wherein the sending node is configured for sending data packets to the receiving node and wherein the receiving node separates protocol header information from content data for the data packets received from the sending node via the network segment and wherein not every data packet includes the content data. The receiving node includes a physical layer circuit coupled to the network segment, a buffer coupled to the physical layer circuit to receive at least a portion of the data packet, the portion including at least protocol header information for the data packet, a controller circuit coupled to the buffer to control removal of the portion of the data packet, and an instruction register coupled to the controller circuit to provide instructions to the controller circuit according to a program sequence. The instruction register is conditioned to provide to the controller an instruction which initiates removal of content data from the buffer. The controller circuit determines whether the data packet includes the content data in addition to the protocol header information and when the data packet includes the content data, the controller circuit executes the instruction and when the data packet does not include the content data in addition to the protocol header information, the controller circuit does not execute the instruction. Preferably, the packet is an isochronous data packet. The data communication network can be an IEEE 1394 serial bus. Preferably, the receiving node further comprises a memory. The content data for successive packets are stored in sequential memory locations. In addition, protocol header information for successive packets is preferably stored in sequential memory locations separate from the content data for successive packets.
According to another aspect of the present invention, an apparatus for separating protocol header information from content data for packetized data received from a network segment by a network node wherein not every data packet includes the content data includes means for receiving at least a portion of a packet from the network segment into the network node wherein the portion includes at least a protocol header for the packet, means for removing the protocol header from the portion of the packet, means for storing the protocol header in a first memory location, means for determining whether the packet includes the content data, and means for removing the content data and storing the content data in a second memory location when the packet includes the content data. Preferably, the apparatus also includes means for conditioning the network node for removing content data of the packet. The apparatus can also include means for reversing the conditioning of the network node when the packet does not include the content data. Preferably, the second memory location is a next available location adjacent to a memory location utilized for storing a content data of a prior packet. In addition, the packet is preferably an isochronous data packet. The first memory location need not be adjacent to the second memory location. Preferably, the first memory location is a next available location adjacent to a memory location utilized for storing a protocol header of a prior packet. In addition, the second memory location is a next available location is preferably adjacent to a memory location utilized for storing a content data of a prior packet.
According to still another aspect of the present invention, an IEEE 1394 serial bus network includes a plurality of devices coupled together to communicate isochronous data packets one to another, wherein each data packet includes a protocol header and not every data packet includes content data. The serial bus network includes a transmitting device configured to transmit data packets, an IEEE 1394 serial bus coupled to the transmitting device, and a receiving device coupled to the IEEE 1394 serial bus and configured to receive the data packets transmitted by the transmitting device. The receiving device includes a physical layer circuit coupled to the IEEE 1394 serial bus, a buffer coupled to the physical layer circuit to receive at least a portion of the data packet, the portion including at least a protocol header for the packet, a controller circuit coupled to the buffer to control removal of the portion of the data packet from the buffer, and an instruction register coupled to the controller circuit to provide a next instruction to the controller circuit. The next instruction initiates removal of content data from the buffer. The controller circuit determines whether the data packet includes the content data in addition to the protocol header. If the data packet includes the content data, then the controller circuit executes the instruction and, if the data packet does not include the content data in addition to the protocol header, then the controller circuit does not execute the instruction. The receiving device can include a memory. Content data for successive packets are stored in sequential memory locations. Preferably, protocol headers for successive packets are stored in sequential memory locations separate from the content data for successive packets.